package com.gitee.jarris.leetcode_practice.datastructure;

import java.util.LinkedList;

/**
 * 用两个栈实现一个队列。队列的声明如下，请实现它的两个函数 appendTail 和 deleteHead ，
 * 分别完成在队列尾部插入整数和在队列头部删除整数的功能。
 * (若队列中没有元素，deleteHead操作返回 -1 )
 *
 */
public class CQueue {

    LinkedList<Integer> stackA, stackB;

    public CQueue() {
        stackA = new LinkedList<>();
        stackB = new LinkedList<>();
    }

    /*
    由于是2个栈，只能使用addLast()方法和removeLast方法
     */
    public void appendTail(int value) {
        stackA.addLast(value);
    }

    public int deleteHead() {
        if(!stackB.isEmpty()){
            return stackB.removeLast();
        }

        if(stackA.isEmpty()){
            return -1;
        }
        while(!stackA.isEmpty()){
            stackB.addLast(stackA.removeLast());
        }
        return stackB.removeLast();
    }
}

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue obj = new CQueue();
 * obj.appendTail(value);
 * int param_2 = obj.deleteHead();
 */